package com.manage.base.dao.impl;

import java.util.List;

import org.springframework.stereotype.Repository;

import com.manage.base.dao.IBaseDao;
import com.manage.base.dao.MySqlSessionDaoSupport;

@Repository("baseDao")
public class BaseDaoImpl<T>
		extends MySqlSessionDaoSupport
		implements IBaseDao<T> {
	/**
	 * 查询
	 * 
	 * @param T
	 * @return
	 */
	public List<T> select(T t) {
		return getSqlSession().selectList(t.getClass().getSimpleName() + "Mapper.select", t);
	}

	/**
	 * 更新
	 * 
	 * @param T
	 */
	public int update(T t) {
		return getSqlSession().update(t.getClass().getSimpleName() + "Mapper.update", t);
	}

	/**
	 * 添加
	 * 
	 * @param T
	 * @return
	 */
	public int add(T t) {
		return getSqlSession().insert(t.getClass().getSimpleName() + "Mapper.add", t);
	}

	/**
	 * 删除
	 * 
	 * @param T
	 */
	public int delete(T t) {
		return getSqlSession().delete(t.getClass().getSimpleName() + "Mapper.delete", t);
	}

	/**
	 * 判断存在
	 * 
	 * @param name
	 * @return
	 */
	public boolean exist(T t) {
		Long count = getSqlSession().selectOne(t.getClass().getSimpleName() + "Mapper.exist", t);
		if (count != null && count > 0) {
			return true;
		} else {
			return false;
		}
	}

	@Override
	public List<T> selectList(T t) {
		return select(t);
	}

	@Override
	public int insert(T t) {
		return add(t);
	}

	@Override
	public int deleteById(int id) {
		return -1;
	}

	@Override
	public T selectById(int id) {
		return null;
	}

	@Override
	public T selectOne(T t) {
		List<T> select = select(t);
		if (select != null && select.size() > 0) {
			return select.get(0);
		}
		return null;
	}

	@Override
	public int selectCount(T t) {
		return 0;
	}

}
